#!/bin/sh
set -e

TESTDIR="$(readlink -f "$(dirname "$0")")"
. "$TESTDIR/framework"
setupenvironment
configarchitecture 'amd64'

insertpackage 'unstable' 'a' 'all' '1' 'Depends: b | d'
insertpackage 'unstable' 'b' 'all' '1'
insertpackage 'unstable' 'c' 'all' '1' 'Depends: d | b'
insertpackage 'unstable' 'd' 'all' '1'

setupaptarchive

testsuccessequal 'Reading package lists...
Building dependency tree...
The following additional packages will be installed:
  b
The following NEW packages will be installed:
  a b c
0 upgraded, 3 newly installed, 0 to remove and 0 not upgraded.
Inst b (1 unstable [all])
Inst a (1 unstable [all])
Inst c (1 unstable [all])
Conf b (1 unstable [all])
Conf a (1 unstable [all])
Conf c (1 unstable [all])' apt install a c -s
testsuccessequal 'Reading package lists...
Building dependency tree...
The following additional packages will be installed:
  d
The following NEW packages will be installed:
  a c d
0 upgraded, 3 newly installed, 0 to remove and 0 not upgraded.
Inst d (1 unstable [all])
Inst a (1 unstable [all])
Inst c (1 unstable [all])
Conf d (1 unstable [all])
Conf a (1 unstable [all])
Conf c (1 unstable [all])' apt install c a -s

TOPLEVELCHOICE='Reading package lists...
Building dependency tree...
The following NEW packages will be installed:
  a c d
0 upgraded, 3 newly installed, 0 to remove and 0 not upgraded.
Inst d (1 unstable [all])
Inst a (1 unstable [all])
Inst c (1 unstable [all])
Conf d (1 unstable [all])
Conf a (1 unstable [all])
Conf c (1 unstable [all])'
testsuccessequal "$TOPLEVELCHOICE" apt install d a c -s
testsuccessequal "$TOPLEVELCHOICE" apt install a c d -s

testsuccessequal 'Reading package lists...
Building dependency tree...
  MarkInstall a:amd64 < none -> 1 @un puN Ib > FU=1
    MarkInstall b:amd64 < none -> 1 @un uN > FU=0
  MarkInstall c:amd64 < none -> 1 @un puN > FU=1
Starting pkgProblemResolver with broken count: 0
Starting 2 pkgProblemResolver with broken count: 0
Done
The following additional packages will be installed:
  b
The following NEW packages will be installed:
  a b c
0 upgraded, 3 newly installed, 0 to remove and 0 not upgraded.
Inst b (1 unstable [all])
Inst a (1 unstable [all])
Inst c (1 unstable [all])
Conf b (1 unstable [all])
Conf a (1 unstable [all])
Conf c (1 unstable [all])' apt install a a a c a a a -s -o Debug::pkgProblemResolver=1 -o Debug::pkgDepCache::Marker=1
